package com.blog.cmrpersonalblog.enums;

import lombok.Getter;

/**
 * 通知类型枚举
 */
@Getter
public enum NotificationType {
    
    /**
     * 新增粉丝
     */
    FOLLOW("FOLLOW", "新增粉丝", "关注了你"),
    
    /**
     * 点赞文章
     */
    LIKE_ARTICLE("LIKE_ARTICLE", "点赞", "赞了你的文章"),
    
    /**
     * 点赞评论
     */
    LIKE_COMMENT("LIKE_COMMENT", "点赞", "赞了你的评论"),
    
    /**
     * 收藏文章
     */
    COLLECT("COLLECT", "收藏", "收藏了你的文章"),
    
    /**
     * 评论文章
     */
    COMMENT("COMMENT", "评论", "评论了你的文章"),
    
    /**
     * 回复评论
     */
    REPLY("REPLY", "回复", "回复了你的评论"),
    
    /**
     * @提及
     */
    MENTION("MENTION", "提及", "在评论中提到了你"),
    
    /**
     * 系统通知
     */
    SYSTEM("SYSTEM", "系统通知", "系统消息");

    /**
     * 类型代码
     */
    private final String code;

    /**
     * 类型名称
     */
    private final String name;

    /**
     * 操作描述
     */
    private final String action;

    NotificationType(String code, String name, String action) {
        this.code = code;
        this.name = name;
        this.action = action;
    }

    /**
     * 根据代码获取枚举
     */
    public static NotificationType fromCode(String code) {
        for (NotificationType type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        return null;
    }

    /**
     * 根据代码获取名称
     */
    public static String getNameByCode(String code) {
        NotificationType type = fromCode(code);
        return type != null ? type.name : "未知";
    }

    /**
     * 根据代码获取操作描述
     */
    public static String getActionByCode(String code) {
        NotificationType type = fromCode(code);
        return type != null ? type.action : "";
    }
}

